基于个人服务器的P2P内网穿透 您所在的位置:网站首页 zerotier 搭建网站 基于个人服务器的P2P内网穿透

基于个人服务器的P2P内网穿透

2023-11-12 09:15| 来源: 网络整理| 查看: 265

前言

作为一个重度桌游爱好者,最近和小伙伴沉迷TTS(桌游模拟器),但是TTS是基于P2P进行连接的,如果小伙伴都不在一个网络节点上就会非常卡顿,为了更好的玩游戏,最后使用了基于zerotier的内网穿透方案

用上了内网穿透之后,再也不会掉线了,桌游体验极其完美

原理购买服务器zerotier虚拟节点搭建服务器运维客户端配置 原理

我只是前端,具体的运维技术我不是太了解,但是大致原理可以理解为:

1.P2P

P2P是用户与用户直连,某一个玩家作为主机,其他人去连接他的节点

但是我们都知道,这很取决于主机玩家的网络状况,而且因为是直连,延迟非常感人

只要主机玩家网络一波动,大家就都掉线了

 2.内网穿透

内网穿透就是我们所有客户端去连接一个节点,然后通过这个节点分发数据,进行直连

这个节点就是zerotier

但是zerotier服务器在国外,直连的话网速感人,我们就需要我们的个人服务器作为一个中转站,所有客户端连我们的国内服务器,服务器加速客户端之间的互相访问(因为服务器是公网ip,直连延迟就非常低)

购买服务器

本人用的阿里云个人服务器,基于linux和node搭建的后端,带宽不需要很高即可

购买服务器的可以参考我写的 

个人网站搭建保姆级教程(1)-服务器购买与环境搭建_皮宁澜的博客-CSDN博客

zerotier虚拟节点搭建

zerotier可以理解为一个简单的内网穿透管理器,方便我可爱的小伙伴们快速连接到我的服务器,实际传输其实是靠我们的服务器的

1.zerotier注册

ZeroTier Central

zerotier的官网非常简洁轻快

之后点击 Create A Network,选择private(个人服务器)

 根据不同需求,zerotier支持创建很多个NETWORK

这样你就相当于有了一个内网穿透的账户,而且会生成一个NETWORK ID,将ID复制下来

2.服务器连接

之后在服务器配置zerotier,对于一般的linux系统,只需要一串命令就好

curl -s https://install.zerotier.com | sudo bash

以管理员身份在服务器上安装zerotier

其他操作系统可以访问

Download – ZeroTier

下载好后,我们就可以进行登陆了,linux输入

zerotier-cli join XXXXXXXX #刚刚在zerotier官网上创建生成的NETWORK ID

最后,我们还要去zerotier官网上将我们刚刚join的操作进行一个通过 

第一个设备为我的个人电脑测试用,第二个设备为我的服务器,一直保持运行状态,实际运用只需要服务器保持连接就好

服务器运维

现在服务器已经连接到zerotier了,但是还需要配置一下客户端文件

打开服务器的zerotier目录(如果是linux系统,在/var/lib/zerotier-one)输入

zerotier-idtool initmoon identity.public >>moon.json

 这样会生成一个卫星服务器(moon)的配置文件moon.json

我们通过记事本打开moon.json,将其中的

"stableEndpoints": [ ]

改为

"stableEndpoints": [ XXX.XX.XX ] //你的服务器的公网IP

改好后新JSON文件覆盖原来的JSON文件

覆盖好后执行命令

sudo zerotier-idtool genmoon moon.json

这样,zerotier会读取我们刚刚的moon.json并生成一个.moon文件,我的是00000039c1ef6855.moon(每一个机器生成的moon文件不一样)

我们需要将这个.moon文件保存一下,等一下客户端会用到

最后,我们只需要重启一下我们的崭新出厂的卫星服务器就好了

在我们刚刚的 /var/lib/zerotier-one 文件夹下面,手动创建一个新文件夹moons.d,将刚刚生成的 .moon文件放进去

其他操作系统在对应的zerotier文件夹里面

然后重新启动我们的zerotier服务即可

service zerotier-one restart

 

客户端配置

客户端的配置就很简单了,而且是一次配置,终身享用,开机即启,无感直连。

1.下载zerotier并安装

Windows系统:

官网下载Download – ZeroTier

linux系统:(终端执行)

curl -s https://install.zerotier.com | sudo bash

如果下载速度慢可以直接网上找下载包

2.拿到刚刚服务器上生成的.moon文件

(1)客户端是linux系统

把.moon文件放到对应zerotier文件夹下新建的moons.d文件夹里面,执行命令

service zerotier-one restart

 (2)客户端是Windows系统

打开计算机中的‘服务’

找到zerotier服务,右键,点击属性,打开zerotier目录

 

 找到这个地址,打开这个地址(默认是C:\ProgramData\ZeroTier\One)并新建一个moons.d文件夹,把我们刚刚服务器生成的.moon文件放进去

之后回到服务页面,重启zerotier服务

 

最后打开命令行(cmd,或者搜索命令提示符)

 输入zerotier-cli listpeers并回车

 出现这一行即可

这样的话,客户端的zerotier会自动识别到我们卫星服务器(moon)。而且与在同一moon服务器下的客户端通过P2P传输数据的时候,会自动使用我们的卫星服务器。

而且每次开机会自动开启服务,以后直接连就可以了

后记

正好我有个人服务器,捣鼓了半个下午终于搞定,当天就和小伙伴开TTS开到凌晨

之前我们三人直连,互相的延迟大概都是400ms,而且总是断,现在内网穿透之后,延迟稳定在20ms,再也没有掉线的情况了。小伙伴们普遍使用体验极其良好

当然了,P2P内网穿透不光可以用在玩游戏上,用我这一套,相当于所有设备都在一个局域网下面,那想干什么都可以了~(共享文件,远程连接等等)

有一位小伙伴被隔离了,就只能通过线上一起玩桌游了



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有